home *** CD-ROM | disk | FTP | other *** search
- Path: news.nevada.edu!not-for-mail
- From: kesslert@nevada.edu (Troy Kessler)
- Newsgroups: comp.lang.c++
- Subject: Here Is The Fastest Sort Just Change Integers To Reals
- Date: 1 Mar 1996 17:09:06 GMT
- Organization: University of Nevada System Computing Services
- Message-ID: <4h7avi$o0d@news.nevada.edu>
- NNTP-Posting-Host: unauthenticated_user@pioneer.nevada.edu
- X-Newsreader: TIN [UNIX 1.3 950520BETA PL0]
-
- #include <fstream.h>
- void Quicksort(int [],int loBound,int hiBound );
- int main()
- {
- ifstream inFile; //needed to use input file
- ofstream outFile; //needed to use output file
- inFile.open("int.dat"); //open int.dat which contains input
- outFile.open("outfile.dat"); //open outfile.dat gets output
- int number;
- inFile>>number;
- int i;
- int vec[200];
- int loBound=0;
- int hiBound=number;
- for(i=loBound;i<hiBound;i++)
- {
- inFile>>vec[i];
- }
-
- Quicksort(vec,loBound,hiBound);
- outFile<<number<<endl;
- for(i=loBound+1;i<hiBound+1;i++)
- {
- outFile<<vec[i]<<endl;
- }
- return 0;
- }
-
-
-
- void Quicksort(int vec[],int loBound,int hiBound )
- {
- int pivot;
- int loSwap;
- int hiSwap;
- int temp;
- if (loBound >= hiBound)
- return;
- if (hiBound-loBound == 1)
- {
- if (vec[loBound] > vec[hiBound])
- {
- temp = vec[loBound];
- vec[loBound] = vec[hiBound];
- vec[hiBound] = temp;
- }
- return;
- }
- pivot = vec[(loBound+hiBound)/2];
- vec[(loBound+hiBound)/2] = vec[loBound];
- vec[loBound] = pivot;
- loSwap = loBound + 1;
- hiSwap = hiBound;
- do {
- while (loSwap <= hiSwap && vec[loSwap] <= pivot)
- loSwap++;
- while (vec[hiSwap] > pivot)
- hiSwap--;
- if (loSwap < hiSwap)
- {
- temp = vec[loSwap];
- vec[loSwap] = vec[hiSwap];
- vec[hiSwap] = temp;
- }
- } while (loSwap < hiSwap);
- vec[loBound] = vec[hiSwap];
- vec[hiSwap] = pivot;
- Quicksort(vec, loBound, hiSwap-1);
- Quicksort(vec, hiSwap+1, hiBound);
- }
-